from abc import ABC, abstractmethod



class BaseClock(ABC):
    
    @abstractmethod
    def wait_clock(self):
        '''
            Using env.timeout to delay a clock period
        '''
        pass
    
    @abstractmethod
    def clock(self):
        '''
            Get clock value
        '''
        pass

    @abstractmethod
    def get_period(self):
        '''
            Get period
        '''
        pass

    @abstractmethod
    def set_clock(self, clk):
        '''
            Set clock value
        '''
        pass

    @abstractmethod
    def start(self):
        '''
            Start clock running
        '''
        pass